FlashAttention (IO Aware 어텐션)

FlashAttention (IO Aware 어텐션)

2025-12-13, G30DR

1. 서론 (Introduction)

현대 인공지능, 특히 자연어 처리(NLP)와 컴퓨터 비전(CV) 분야는 트랜스포머(Transformer) 아키텍처의 등장으로 인해 패러다임의 전환을 맞이했다. 트랜스포머 모델의 성능은 모델의 파라미터 수와 학습 데이터의 양, 그리고 문맥(Context)의 길이에 비례하여 향상되는 경향을 보인다. 그러나 이러한 확장은 하드웨어 자원, 특히 GPU 메모리와 연산 속도의 한계에 직면하게 된다. 그중에서도 셀프 어텐션(Self-Attention) 메커니즘은 입력 시퀀스 길이(N)에 대해 O(N^2)의 시간 복잡도와 메모리 복잡도를 가지며, 이는 긴 문맥을 처리해야 하는 거대 언어 모델(LLM)의 확장에 가장 큰 병목으로 작용해왔다.

기존의 어텐션 최적화 연구들은 주로 연산량(FLOPs)을 줄이는 데 초점을 맞추어, 어텐션 행렬을 희소(Sparse)하게 만들거나 저랭크(Low-rank) 근사를 사용하는 방식을 택했다. 하지만 이러한 근사 방법들은 모델의 정확도 손실을 초래하거나 실제 하드웨어에서의 속도 향상으로 직결되지 않는 경우가 많았다. 이는 현대 GPU의 성능 병목이 연산 속도 자체가 아니라, 메모리 대역폭(Memory Bandwidth)에 있다는 사실을 간과했기 때문이다.

FlashAttention은 이러한 문제의식에서 출발하여, 하드웨어의 메모리 계층 구조(Memory Hierarchy)를 명시적으로 고려한 ‘IO 인지(IO-Aware)’ 알고리즘으로 제안되었다. 스탠포드 대학교의 Tri Dao 연구팀에 의해 제안된 이 기법은 GPU의 고속 온칩(On-chip) 메모리인 SRAM과 상대적으로 느린 고대역폭 메모리(HBM) 사이의 데이터 이동을 최소화함으로써, 정확도 손실 없이(Exact Attention) 속도를 획기적으로 향상시키고 메모리 사용량을 선형(O(N))으로 감소시켰다.

본 보고서에서는 FlashAttention의 초기 버전부터 최신 Hopper 아키텍처에 최적화된 FlashAttention-3에 이르기까지의 기술적 진화 과정을 심도 있게 분석한다. 각 버전이 해결하고자 했던 하드웨어적 병목 현상과 이를 극복하기 위한 알고리즘적 혁신(타일링, 재계산, 워프 전문화 등)을 수학적 원리와 하드웨어 아키텍처 관점에서 상세히 기술한다. 또한, PyTorch 및 Hugging Face 등 주요 딥러닝 프레임워크에서의 구현 현황과 실제 성능 벤치마크 결과를 통해 이 기술이 AI 인프라에 미치는 영향을 포괄적으로 조망한다.

2. 배경 지식 및 하드웨어적 제약 (Background & Hardware Constraints)

FlashAttention의 설계 철학을 이해하기 위해서는 먼저 트랜스포머의 어텐션 연산 특성과 GPU 하드웨어의 물리적 제약 사항을 명확히 파악해야 한다.

2.1 표준 어텐션 메커니즘의 병목 (Bottlenecks in Standard Attention)

표준적인 ’Scaled Dot-Product Attention’은 쿼리(Q), 키(K), 밸류(V) 행렬을 입력으로 받아 다음과 같은 과정을 통해 출력(O)을 산출한다:

S = Q K^T \in \mathbb{R}^{N \times N} \\ P = \text{softmax}(S) \in \mathbb{R}^{N \times N} \\ O = P V \in \mathbb{R}^{N \times d}

여기서 N은 시퀀스 길이, d는 헤드 차원을 의미한다. 이 수식의 구현 과정에서 발생하는 가장 큰 문제는 중간 결과물인 SP 행렬이다. 이 두 행렬은 N \times N의 크기를 가지며, 시퀀스 길이가 증가함에 따라 그 크기가 제곱으로 커진다.

기존의 딥러닝 프레임워크(PyTorch, TensorFlow 등)는 연산을 커널(Kernel) 단위로 수행하며, 각 커널의 입력과 출력은 GPU의 메인 메모리인 HBM에 읽고 쓰여진다. 즉, Q K^T를 계산하여 S를 HBM에 쓰고, 다시 S를 읽어와 소프트맥스를 수행한 뒤 P를 HBM에 쓰고, 다시 PV를 읽어 O를 계산하는 과정을 거친다. N=1024 수준에서는 큰 문제가 아니지만, N=32K가 되면 SP 행렬 하나만으로도 수 기가바이트(GB)의 메모리를 차지하게 되며, 이 거대한 데이터를 느린 HBM에 반복적으로 쓰고 읽는 과정에서 심각한 대역폭 병목이 발생한다.1

2.2 GPU 메모리 계층 구조 (GPU Memory Hierarchy)

현대 GPU(A100, H100 등)의 연산 능력은 지난 수년 동안 비약적으로 발전했으나, 메모리 대역폭의 발전 속도는 이에 미치지 못했다. 이를 ’메모리 장벽(Memory Wall)’이라 부른다. GPU의 메모리는 크게 두 가지 계층으로 나눌 수 있다.3

  1. HBM (High Bandwidth Memory): 40GB~80GB의 대용량을 제공하지만, 대역폭은 1.5TB/s~3.35TB/s 수준으로 상대적으로 느리다.
  2. SRAM (Shared Memory/L1 Cache): 각 스트리밍 멀티프로세서(SM) 내부에 위치하며, 용량은 192KB~228KB로 매우 작지만, 대역폭은 19TB/s 이상으로 HBM보다 훨씬 빠르다.
메모리 유형용량 (A100 기준)대역폭 (A100 기준)특성
SRAM192 KB / SM (총 20MB)~19 TB/s매우 빠름, 매우 작음, 연산 유닛과 직접 연결
HBM40 GB ~ 80 GB1.5 ~ 2.0 TB/s느림, 대용량, 메인 저장소

기존 어텐션 구현은 연산 시간의 대부분을 HBM 접근(Access)에 소모하는 ‘메모리 바운드(Memory-bound)’ 특성을 가진다. 반면, 행렬 곱셈(GEMM)과 같은 연산은 HBM 접근 대비 연산량의 비율이 높아 ‘컴퓨트 바운드(Compute-bound)’ 특성을 가진다. FlashAttention의 핵심 목표는 어텐션 연산을 메모리 바운드 상태에서 컴퓨트 바운드 상태로 전환하는 것이다. 이를 위해서는 HBM 접근 횟수를 최소화하고, 빠른 SRAM 내에서 데이터를 최대한 재활용해야 한다.1

3. FlashAttention-1: 타일링과 재계산을 통한 혁신

2022년 Tri Dao 등이 발표한 FlashAttention(이하 FA1)은 정확한 어텐션 값을 계산하면서도 HBM 읽기/쓰기를 획기적으로 줄이는 알고리즘을 제안했다. FA1의 핵심은 **타일링(Tiling)**과 **재계산(Recomputation)**이다.4

3.1 타일링(Tiling)과 온라인 소프트맥스(Online Softmax)

타일링은 큰 행렬을 작은 블록으로 나누어 처리하는 기법이다. 행렬 곱셈에서는 이미 널리 사용되지만, 어텐션에 적용하기 어려웠던 이유는 소프트맥스(Softmax) 함수의 특성 때문이다. 소프트맥스는 전체 행 벡터의 합(분모)을 알아야 개별 원소의 확률 값을 구할 수 있으므로, 전체 행렬 S를 보지 않고는 계산이 불가능한 것처럼 보였다.

FA1은 온라인 소프트맥스(Online Softmax) 기법을 도입하여 이 문제를 해결했다. 이 기법은 전체 데이터를 한 번에 로드하지 않고, 블록 단위로 데이터를 처리하면서 국소적인 통계량(Local Statistics)을 유지하고 갱신하는 방식이다.

3.1.1 알고리즘 원리

입력 행렬 Q, K, V를 SRAM 크기에 맞는 블록 B_c, B_r 크기로 분할한다.

  1. 초기화: HBM에서 Q의 블록 Q_i를 SRAM으로 로드한다.
  2. 순회: HBM에서 K, V의 블록 K_j, V_j를 순차적으로 SRAM으로 로드한다.
  3. 부분 연산: Q_i K_j^T를 계산하여 부분 어텐션 스코어를 구한다.
  4. 통계량 갱신: 현재 블록에서의 최대값(m_{curr})과 지수 합(l_{curr})을 계산하고, 이전 블록까지의 통계량(m_{prev}, l_{prev})과 결합하여 전체 통계량을 갱신한다. 이 과정에서 출력값 O_i도 새로운 정규화 상수에 맞춰 리스케일링(Rescaling)된다.
  5. 최종 저장: 모든 K, V 블록에 대한 순회가 끝나면 최종 O_i를 HBM에 기록한다.

이 방식을 통해 거대한 N \times N 크기의 SP 행렬을 HBM에 전혀 기록하지 않고(Materialize하지 않음), 오직 최종 출력 O와 블록별 통계량(L, m)만을 저장한다. 이는 메모리 사용량을 O(N^2)에서 O(N)으로 줄이는 결정적인 역할을 한다.4

3.2 역전파(Backpropagation)를 위한 재계산 전략

딥러닝 학습 시에는 그래디언트 계산을 위해 순전파 단계의 중간 값들을 저장해두는 것이 일반적이다. 그러나 FA1은 S, P 행렬을 저장하지 않기 때문에, 역전파 시 필요한 정보가 누락된다.

FA1은 이를 해결하기 위해 재계산(Recomputation) 전략을 사용한다. 역전파 단계에서 순전파 때 저장해 둔 Q, K, V와 통계량(L, m)을 사용하여, SRAM 내부에서 어텐션 스코어 S와 확률 P를 다시 계산한다.

얼핏 보면 연산량(FLOPs)이 증가하여 속도가 느려질 것 같지만, 실제로는 그렇지 않다. 어텐션 연산은 메모리 대역폭이 병목이기 때문에, HBM에서 거대한 행렬을 읽어오는 시간보다 빠른 SRAM과 연산 코어를 사용하여 값을 다시 계산하는 것이 전체 실행 시간(Wall-clock time) 측면에서 훨씬 빠르다. 이는 ’연산을 늘려서 메모리 접근을 줄인다’는 현대 GPU 프로그래밍의 핵심 최적화 전략과 일치한다.1

3.3 IO 복잡도와 성능 이득

이론적 분석에 따르면, 표준 어텐션의 HBM 접근 복잡도는 \Theta(Nd + N^2)이다. 반면, FA1의 HBM 접근 복잡도는 \Theta(N^2 d^2 M^{-1})이다(여기서 M은 SRAM 크기). d^2M보다 훨씬 작으므로, FA1은 M의 크기에 비례하여 HBM 접근을 획기적으로 줄인다. 벤치마크 결과, FA1은 GPT-2 학습 속도를 3배, BERT-large 학습 속도를 15% 향상시켰으며, 시퀀스 길이가 길어질수록 그 차이는 더욱 벌어졌다.4

4. FlashAttention-2: 병렬성 최적화와 점유율 극대화

FA1은 혁신적이었지만, 몇 가지 비효율적인 부분이 존재했다. 특히 시퀀스 길이가 매우 길거나 배치 크기가 작을 때 GPU의 수많은 스레드 블록을 충분히 활용하지 못하는 문제가 있었다. 2023년 발표된 FlashAttention-2(이하 FA2)는 이러한 한계를 극복하기 위해 설계되었다.9

4.1 비(非) 행렬 곱 연산(Non-Matmul FLOPs)의 최소화

FA1에서는 온라인 소프트맥스를 수행하면서 통계량을 갱신하기 위해 잦은 리스케일링 연산이 필요했다. 이는 GPU의 텐서 코어(Tensor Core)가 아닌 CUDA 코어(FP32 연산 유닛)를 사용해야 하므로 전체 파이프라인의 효율을 떨어뜨렸다.

FA2는 수식의 재구성을 통해 이러한 비 행렬 곱 연산을 최소화했다. 순전파 과정에서 로컬 최대값과 지수 합을 별도로 유지하는 대신, 로그 합(LogSumExp) 통계량 하나만으로 관리하도록 알고리즘을 단순화하여 텐서 코어의 가동률을 높였다.9

4.2 시퀀스 차원 병렬화 (Parallelism along Sequence Dimension)

FA1은 배치(Batch) 차원과 헤드(Head) 차원에 대해서만 병렬화를 수행했다. 긴 문맥(Long Context)을 처리할 때는 메모리 한계로 인해 배치 크기를 1로 설정하는 경우가 많은데, 이 경우 GPU의 수많은 SM 중 일부만 사용되어 점유율(Occupancy)이 낮아지는 문제가 발생한다.

FA2는 **시퀀스 길이 차원(N)**에 대해서도 병렬화를 수행한다. 쿼리 시퀀스(Q)를 여러 개의 타일로 나누고, 각 타일을 서로 다른 스레드 블록(Thread Block)에 할당하여 병렬로 처리한다. 이렇게 하면 배치 크기가 1이더라도 시퀀스 길이가 길면 충분한 수의 스레드 블록을 생성하여 GPU 전체를 포화(Saturate)시킬 수 있다.

또한, 역전파 단계에서도 시퀀스 차원 병렬화를 적용하여 속도를 개선했다. 이를 위해 스레드 블록 간의 통신이 필요해지는데, 원자적 덧셈(Atomic Add) 연산을 사용하여 HBM 상의 결과에 그래디언트를 누적하는 방식을 채택했다.9

4.3 워프(Warp) 간 작업 분배 개선

FA2는 스레드 블록 내부의 워프(Warp, 32개 스레드 그룹) 간 작업 분배 방식도 개선했다. FA1은 ‘Split-K’ 방식을 사용하여 K 차원을 나누어 처리했지만, FA2는 Q 차원을 기준으로 워프에 작업을 할당하는 방식을 최적화하여 공유 메모리(Shared Memory) 접근 시 발생하는 뱅크 충돌(Bank Conflict)을 줄이고 레지스터 사용 효율을 높였다. 이러한 개선을 통해 FA2는 A100 GPU에서 이론적 최대 성능의 73%까지 도달하며 FA1 대비 약 2배의 속도 향상을 이루었다.9

기능FlashAttention-1FlashAttention-2
병렬화 차원Batch, HeadBatch, Head, Sequence Length
작업 분할Split-K 위주최적화된 워프 분할
소프트맥스 연산잦은 리스케일링수식 단순화로 연산 감소
성능 (A100 기준)이론 성능의 25~40%이론 성능의 50~73%

5. FlashAttention-3: Hopper 아키텍처와 비동기성의 극대화

2024년, NVIDIA의 H100 (Hopper 아키텍처) GPU가 보급되면서 이에 맞춘 새로운 최적화가 필요해졌다. H100은 강력한 연산 능력뿐만 아니라, 비동기(Asynchronous) 데이터 전송 및 연산 기능이 대폭 강화되었다. FlashAttention-3(이하 FA3)는 이러한 Hopper 아키텍처의 특성을 십분 활용하기 위해 개발되었다.11

5.1 Hopper 아키텍처의 핵심: WGMMA와 TMA

FA3를 이해하기 위해서는 H100의 두 가지 핵심 기능을 알아야 한다.

  1. WGMMA (Warp Group Matrix Multiply-Accumulate): 이전 세대(Ampere)까지는 워프 단위로 텐서 코어 연산을 수행했으나, Hopper는 ‘워프 그룹(Warp Group, 4개의 워프)’ 단위로 더 큰 행렬 연산을 수행할 수 있다. 이는 연산 처리량을 높일 뿐만 아니라, 입력 데이터를 레지스터가 아닌 공유 메모리에서 직접 읽어올 수 있어 레지스터 압박(Register Pressure)을 줄여준다.15
  2. TMA (Tensor Memory Accelerator): HBM과 SRAM 사이의 데이터 전송을 전담하는 하드웨어 유닛이다. 기존에는 CUDA 코어가 데이터 복사 명령을 직접 수행해야 했으나, TMA를 사용하면 데이터 복사가 백그라운드에서 비동기적으로 이루어지며, CUDA 코어는 오로지 연산에만 집중할 수 있다.17

5.2 워프 전문화(Warp Specialization)와 생산자-소비자 모델

FA3는 ‘워프 전문화’ 기법을 도입하여 스레드 블록 내의 워프들을 역할별로 분리했다.

  • 생산자 워프(Producer Warps): 연산에 참여하지 않고, 오직 TMA를 제어하여 HBM에서 데이터를 SRAM으로 가져오는 역할만 수행한다.
  • 소비자 워프(Consumer Warps): 데이터를 로드하는 부담 없이, SRAM에 준비된 데이터를 사용하여 WGMMA 연산과 소프트맥스를 수행한다.

이 두 그룹은 비동기적으로 동작하며, 핑퐁 버퍼링(Ping-pong buffering) 또는 **순환 버퍼(Circular Buffer)**를 통해 데이터 로딩과 연산이 완벽하게 중첩(Overlap)되도록 파이프라이닝된다. 이를 통해 메모리 접근 지연 시간(Latency)을 숨기고(Hide), 연산 유닛을 쉴 새 없이 가동시킬 수 있다.11

5.3 GEMM과 소프트맥스의 중첩 (Intra-Warpgroup Overlapping)

FA3는 한 단계 더 나아가, 연산 내부에서도 중첩을 수행한다. 일반적으로 어텐션은 GEMM1 -> Softmax -> GEMM2 순서로 진행되는데, FA3는 WGMMA 명령어가 비동기적으로 실행되는 동안 CUDA 코어가 유휴 상태가 되지 않도록, 이전 단계의 결과에 대한 소프트맥스 연산을 동시에 수행한다.

특히 저정밀도(FP8) 연산에서는 텐서 코어의 속도가 매우 빨라져 상대적으로 느린 소프트맥스 연산이 병목이 될 수 있는데, 이러한 중첩 실행은 전체 파이프라인의 균형을 맞추는 데 결정적인 역할을 한다.11

5.4 FP8 지원과 수치적 안정성

H100 GPU는 FP8(8-bit Floating Point) 연산을 지원하여 FP16 대비 2배의 이론적 성능을 제공한다. 그러나 비트 수가 줄어든 만큼 정밀도 저하 문제가 발생할 수 있다. FA3는 이를 해결하기 위해 블록 양자화(Block Quantization) 기법을 사용한다. 전체 행렬이 아닌 작은 블록 단위로 양자화를 수행하여 오차를 최소화한다. 또한, 비일관성 처리(Incoherent Processing) 기법을 도입하여 이상치(Outlier)가 양자화 오차에 미치는 영향을 줄였다. 결과적으로 FA3는 FP8을 사용하면서도 FP16에 준하는 정확도를 유지하며, 최대 1.2 PFLOPS에 달하는 연산 속도를 달성했다.21

6. 생태계 통합 및 하드웨어 지원 현황 (Ecosystem & Hardware Support)

FlashAttention은 단순한 연구 성과를 넘어 AI 소프트웨어 스택의 필수 요소로 자리 잡았다.

6.1 PyTorch 통합 (torch.nn.functional.scaled_dot_product_attention)

PyTorch 2.0부터는 torch.nn.functional.scaled_dot_product_attention (SDPA) 함수가 내장되어, 사용자가 별도의 설치 없이도 최적화된 어텐션을 사용할 수 있게 되었다. SDPA는 실행 환경과 입력 데이터의 조건에 따라 다음 세 가지 백엔드 중 하나를 자동으로 선택한다.23

  1. FlashAttention: NVIDIA GPU (Ampere 이상)에서 가장 우선적으로 선택된다.
  2. Memory-Efficient Attention (xFormers): FlashAttention이 지원되지 않는 하드웨어(예: 구형 GPU)나 데이터 타입(FP32)일 때 사용된다.
  3. Math (C++ implementation): 위 두 가지가 모두 불가능할 때 사용되는 표준 구현이다.

사용자는 torch.nn.attention.sdpa_kernel 컨텍스트 매니저를 통해 특정 백엔드 사용을 강제할 수 있다.

Python

import torch
from torch.nn.attention import SDPBackend, sdpa_kernel

# FlashAttention 백엔드 강제 사용 예시
with sdpa_kernel(SDPBackend.FLASH_ATTENTION):
output = torch.nn.functional.scaled_dot_product_attention(q, k, v)

6.2 Hugging Face Transformers 활용

Hugging Face의 transformers 라이브러리는 attn_implementation 파라미터를 통해 모델 로딩 시 손쉽게 FlashAttention-2를 활성화할 수 있다.

Python

model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2"
)

단, 패딩(Padding) 토큰이 포함된 배치를 처리할 때는 주의가 필요하다. FlashAttention은 패딩 토큰에 대해서도 연산을 수행하지 않도록 최적화되어 있지만(VarLen), 이를 위해서는 데이터를 ’언패딩(Unpadding)’하거나 ’패킹(Packing)’하여 1차원 배열로 만드는 전처리 과정이 필요할 수 있다. Hugging Face TRL 라이브러리 등에서는 이러한 패킹 기능을 지원하여 학습 효율을 극대화한다.25

6.3 하드웨어 지원 매트릭스

FlashAttention의 버전별 지원 하드웨어는 다음과 같다.27

버전지원 GPU 아키텍처주요 모델비고
FlashAttention-1Turing, Ampere, Ada, HopperT4, RTX 2080, A100, RTX 30/40구형 하드웨어 지원
FlashAttention-2Ampere, Ada, HopperA100, RTX 3090/4090, H100FP16/BF16 필수
FlashAttention-3Hopper (현재 기준)H100, H800Hopper 전용 기능(TMA, WGMMA) 사용
AMD ROCmCDNA, RDNAMI200, MI300, RX 7900CK 또는 Triton 백엔드 사용

특히 AMD GPU의 경우, OpenAI Triton 언어로 작성된 FlashAttention 구현체를 통해 MI300X 등 최신 가속기에서 경쟁력 있는 성능을 보여주고 있다.

7. 관련 기술 및 확장 (Extensions & Related Technologies)

FlashAttention의 성공은 다양한 파생 기술의 발전으로 이어졌다.

7.1 FlashDecoding & FlashDecoding++

FlashAttention은 주로 학습(Training)과 긴 문맥의 프리필(Prefill) 단계에서 큰 이득을 준다. 그러나 토큰을 하나씩 생성하는 디코딩(Decoding) 단계에서는 쿼리의 시퀀스 길이가 1이기 때문에 병렬화의 이점을 살리기 어렵다.

이를 해결하기 위해 FlashDecoding이 제안되었다. FlashDecoding은 배치와 헤드 차원뿐만 아니라, 키/밸류(KV) 시퀀스 차원에 대해서도 병렬화를 수행한다. 긴 KV 캐시를 여러 청크로 나누어 병렬로 어텐션 스코어를 계산하고, 마지막에 이를 취합(Reduce)하는 방식이다. 이를 통해 배치 크기가 작은 상황에서도 GPU 자원을 효율적으로 사용하여 생성 속도를 최대 8배까지 향상시켰다.31

7.2 Block-Sparse FlashAttention

모든 토큰이 서로에게 집중할 필요는 없다는 점에 착안하여, 어텐션 행렬을 희소(Sparse)하게 만드는 기법이다. FlashAttention의 블록 기반 접근 방식은 희소성을 적용하기에 매우 적합하다. 특정 블록을 아예 로드하지 않거나 계산에서 제외함으로써, 긴 시퀀스(예: 64K 이상)에서도 연산 속도를 더욱 높일 수 있다. 이는 Long-Range Arena 벤치마크 등에서 표준 FlashAttention보다 빠른 속도를 입증했다.1

7.3 PagedAttention (vLLM)

FlashAttention이 연산 최적화에 집중했다면, PagedAttention은 메모리 할당의 비효율성을 해결하는 데 집중했다. 운영체제의 가상 메모리 페이징 기법에서 영감을 받아, KV 캐시를 연속된 메모리 공간이 아닌 불연속적인 블록(페이지)에 할당한다. 이를 통해 메모리 단편화(Fragmentation)를 해결하고, 동일한 GPU 메모리에서 훨씬 더 큰 배치 크기를 처리할 수 있게 되었다. 현재 vLLM 등 고성능 추론 엔진의 핵심 기술로 사용된다.32

8. 성능 벤치마크 및 분석 (Performance Analysis)

다양한 벤치마크 결과는 FlashAttention의 우수성을 입증한다.

8.1 학습 속도와 메모리

  • GPT-2: FlashAttention 적용 시 Hugging Face 표준 구현 대비 3배, Megatron-LM 대비 1.7배의 학습 속도 향상을 보였다.4
  • BERT-large: MLPerf 1.1 기록을 15% 갱신하며 가장 빠른 단일 노드 학습 속도를 달성했다.
  • 긴 문맥: 시퀀스 길이 4K에서 메모리 사용량이 1/10~1/20 수준으로 감소하여, 기존에는 불가능했던 16K, 32K 문맥 길이의 학습이 가능해졌다. 표준 어텐션은 2K~4K 길이에서 이미 OOM(Out of Memory)이 발생한다.4

8.2 버전별 성능 비교 (A100/H100)

지표표준 어텐션FlashAttention-2FlashAttention-3
속도 (FP16)기준 (1x)2x ~ 4x (vs 표준)FA2 대비 1.5x ~ 2.0x
속도 (FP8)--1.2 PFLOPS (H100)
메모리 복잡도O(N^2)O(N)O(N)
H100 활용률매우 낮음~35%~75%

FlashAttention-3는 H100에서 FA2 대비 1.5~2배의 성능 향상을 보이며, GPU의 이론적 한계에 가까운 성능을 끌어내고 있음을 알 수 있다.14

9. 결론 (Conclusion)

FlashAttention은 단순히 어텐션 연산을 빠르게 만든 기술이 아니라, 딥러닝 모델의 최적화 패러다임을 ’연산 중심(Compute-centric)’에서 ’메모리 중심(Memory-centric)’으로 전환시킨 이정표적인 기술이다.

  1. IO 인지 설계의 승리: 하드웨어의 특성(HBM vs SRAM)을 정확히 파악하고, 타일링과 재계산이라는 알고리즘적 해법을 통해 메모리 병목을 극복했다.
  2. 공진화(Co-evolution): FA1에서 FA3로 이어지는 진화 과정은 GPU 하드웨어(Ampere -> Hopper)의 발전과 궤를 같이하며, 소프트웨어가 하드웨어의 잠재력을 어떻게 극대화할 수 있는지를 보여주는 모범 사례다.
  3. AI 모델링의 확장: 기술적 제약으로 인해 시도하기 어려웠던 긴 문맥(Long Context) 모델링을 가능하게 함으로써, 문서 요약, 장편 소설 창작, 유전체 분석 등 새로운 AI 응용 분야를 개척하는 기반이 되었다.

앞으로도 NPU 등 새로운 AI 가속기가 등장함에 따라, FlashAttention과 같은 IO 인지 알고리즘의 중요성은 더욱 커질 것이다. 이는 단순한 최적화 라이브러리를 넘어, 차세대 AI 시스템을 지탱하는 핵심 인프라 기술로서 그 가치를 지속할 것이다.

참고 자료

  1. FlashAttention: Fast and Memory-Efficient Exact Attention with IO …, 12월 13, 2025에 액세스, https://shreyansh26.github.io/post/2023-03-26_flash-attention/
  2. ELI5: FlashAttention - Aleksa Gordić, 12월 13, 2025에 액세스, https://gordicaleksa.medium.com/eli5-flash-attention-5c44017022ad
  3. How FlashAttention Eliminates Transformer Memory Bottlenecks, 12월 13, 2025에 액세스, https://galileo.ai/blog/stanford-flashattention-algorithm
  4. FlashAttention: Fast and Memory-Efficient Exact Attention with IO …, 12월 13, 2025에 액세스, https://arxiv.org/pdf/2205.14135
  5. [Re] FlashAttention Three Years On - Kia Ghods, 12월 13, 2025에 액세스, https://kiaghods.com/assets/pdfs/[Re]FlashAttention.pdf
  6. FlashAttention: Fast and Memory-Efficient Exact Attention with IO …, 12월 13, 2025에 액세스, https://arxiv.org/abs/2205.14135
  7. FlashAttention: Memory-Efficient Attention - Emergent Mind, 12월 13, 2025에 액세스, https://www.emergentmind.com/topics/flashattention-algorithm
  8. FlashAttention: Fast and Memory-Efficient Exact Attention with IO …, 12월 13, 2025에 액세스, https://www.cs.toronto.edu/~cmaddis/courses/csc2541_w25/presentations/sharma_hocevar_flashattention.pdf
  9. FLASHATTENTION-2: FASTER ATTENTION WITH BETTER …, 12월 13, 2025에 액세스, https://openreview.net/pdf?id=mZn2Xyh9Ec
  10. FlashAttention-2: Faster Attention with Better Parallelism and Work …, 12월 13, 2025에 액세스, https://tridao.me/publications/flash2/flash2.pdf
  11. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://tridao.me/publications/flash3/flash3.pdf
  12. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://proceedings.neurips.cc/paper_files/paper/2024/file/7ede97c3e082c6df10a8d6103a2eebd2-Paper-Conference.pdf
  13. Next Generation of FlashAttention | NVIDIA Technical Blog, 12월 13, 2025에 액세스, https://developer.nvidia.com/blog/next-generation-of-flashattention/
  14. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://wentao.site/flash_attention_v3_summary/
  15. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://tridao.me/blog/2024/flash3/
  16. Flash Attn 3 Gpu Mode Talk | PDF | Computer Engineering - Scribd, 12월 13, 2025에 액세스, https://www.scribd.com/document/872315122/Flash-Attn-3-Gpu-Mode-Talk
  17. Dissecting the NVIDIA Hopper Architecture through … - arXiv, 12월 13, 2025에 액세스, https://arxiv.org/html/2501.12084v1
  18. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://www.together.ai/blog/flashattention-3
  19. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://arxiv.org/html/2407.08608v2
  20. Fast and Accurate Attention with Asynchrony and Low-precision - Liner, 12월 13, 2025에 액세스, https://liner.com/review/flashattention3-fast-and-accurate-attention-with-asynchrony-and-lowprecision
  21. FlashAttention-3: Fast and Accurate Attention with Asynchrony and …, 12월 13, 2025에 액세스, https://arxiv.org/abs/2407.08608
  22. FlashAttention-3: Fast and Accurate Attention with Asynchrony and…, 12월 13, 2025에 액세스, https://openreview.net/forum?id=tVConYid20&referrer=%5Bthe%20profile%20of%20Tri%20Dao%5D(%2Fprofile%3Fid%3D~Tri_Dao1)
  23. torch.nn.functional.scaled_dot_product_attention - PyTorch, 12월 13, 2025에 액세스, https://docs.pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html
  24. Scaled_dot_product_attention - PyTorch Forums, 12월 13, 2025에 액세스, https://discuss.pytorch.org/t/scaled-dot-product-attention/201649
  25. GPU - Hugging Face, 12월 13, 2025에 액세스, https://huggingface.co/docs/transformers/main/perf_infer_gpu_one
  26. Improving Hugging Face Training Efficiency Through Packing with …, 12월 13, 2025에 액세스, https://huggingface.co/blog/packing-with-FA2
  27. Dao-AILab/flash-attention: Fast and memory-efficient exact … - GitHub, 12월 13, 2025에 액세스, https://github.com/Dao-AILab/flash-attention
  28. Inquiry about Turing GPU support progress in FlashAttention-2 #1608, 12월 13, 2025에 액세스, https://github.com/Dao-AILab/flash-attention/issues/1608
  29. High-Performance Multi-Head Attention for Large Models on Volta …, 12월 13, 2025에 액세스, https://arxiv.org/html/2502.12784v3
  30. Model acceleration libraries - AMD ROCm documentation, 12월 13, 2025에 액세스, https://rocm.docs.amd.com/en/latest/how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.html
  31. Flash-Decoding for long-context inference - Together AI, 12월 13, 2025에 액세스, https://www.together.ai/blog/flash-decoding-for-long-context-inference
  32. FlashAttention & Paged Attention: GPU Sorcery for Blazing-Fast …, 12월 13, 2025에 액세스, https://medium.com/@afafel/flashattention-paged-attention-gpu-sorcery-for-blazing-fast-transformers-9307df8a3f3f